/*
 * SoftwareSAR - 1.0
 */
package br.com.cpqd.ssar.gerenciador.gui;

import br.com.cpqd.ssar.gerenciador.GerenciamentoNucleo;
import br.com.cpqd.ssar.utilitarias.CopiarArquivo;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Janela de Atribuição de Material
 * @author  Rafael Buck
 * @version 1.0
 */
public class JanelaFEM extends javax.swing.JDialog {

    /**
     * Controlador de Janelas
     */
    /**
     * Método Construtor
     * @param controladorJanelas ControladorJanelas
     * @param parent Frame
     * @param modal determina se a janela é modal ou não (impede o acesso as janelas abaixo)
     */
    public JanelaFEM(GerenciamentoNucleo managementCore, java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.managementCore = managementCore;


    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel7 = new javax.swing.JPanel();
        jSeparator4 = new javax.swing.JSeparator();
        jLabel10 = new javax.swing.JLabel();
        btnSimular = new javax.swing.JButton();
        btnLimpar = new javax.swing.JButton();
        btnCancelar3 = new javax.swing.JButton();
        jLabel11 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        jPanel6 = new javax.swing.JPanel();
        btnSelecionarDiretorioMalha = new javax.swing.JButton();
        jScrollPane3 = new javax.swing.JScrollPane();
        txtArquivos = new javax.swing.JTextArea();
        jLabel12 = new javax.swing.JLabel();
        btnResultados = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Editar Propriedades");
        setLocationByPlatform(true);
        setModal(true);
        setResizable(false);

        jPanel7.setBackground(new java.awt.Color(231, 240, 250));

        btnSimular.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/cpqd/ssar/gerenciador/gui/recursos/accept.png"))); // NOI18N
        btnSimular.setText("Simular FEM");
        btnSimular.setEnabled(false);
        btnSimular.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSimularActionPerformed(evt);
            }
        });

        btnLimpar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/cpqd/ssar/gerenciador/gui/recursos/limpar1.png"))); // NOI18N
        btnLimpar.setText("Limpar");
        btnLimpar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLimparActionPerformed(evt);
            }
        });

        btnCancelar3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/cpqd/ssar/gerenciador/gui/recursos/Cancelar.png"))); // NOI18N
        btnCancelar3.setText("Cancelar");
        btnCancelar3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelar3ActionPerformed(evt);
            }
        });

        jLabel13.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel13.setText("Passos para simulação através do FEM - Finite Elementh Methods");

        jPanel6.setBackground(new java.awt.Color(231, 240, 250));
        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("1º Passo - Importação da Malha"));

        btnSelecionarDiretorioMalha.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/cpqd/ssar/gerenciador/gui/recursos/folder_explore.png"))); // NOI18N
        btnSelecionarDiretorioMalha.setText("Importar");
        btnSelecionarDiretorioMalha.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSelecionarDiretorioMalhaActionPerformed(evt);
            }
        });

        txtArquivos.setColumns(20);
        txtArquivos.setRows(5);
        jScrollPane3.setViewportView(txtArquivos);

        jLabel12.setText("Selecione o diretório dos arquivos");

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addComponent(btnSelecionarDiretorioMalha)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 290, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(174, Short.MAX_VALUE))
            .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 569, Short.MAX_VALUE)
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnSelecionarDiretorioMalha)
                    .addComponent(jLabel12))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 252, Short.MAX_VALUE))
        );

        btnResultados.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/cpqd/ssar/gerenciador/gui/recursos/accept.png"))); // NOI18N
        btnResultados.setText("Resultados");
        btnResultados.setEnabled(false);
        btnResultados.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnResultadosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jSeparator4, javax.swing.GroupLayout.DEFAULT_SIZE, 585, Short.MAX_VALUE)
                    .addGroup(jPanel7Layout.createSequentialGroup()
                        .addComponent(btnSimular)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnLimpar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnCancelar3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnResultados))
                    .addGroup(jPanel7Layout.createSequentialGroup()
                        .addComponent(jLabel10)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel13))
                    .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel7Layout.createSequentialGroup()
                        .addGap(26, 26, 26)
                        .addComponent(jLabel10))
                    .addGroup(jPanel7Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jLabel13)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnLimpar)
                    .addComponent(btnCancelar3)
                    .addComponent(btnSimular)
                    .addComponent(btnResultados))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void btnSimularActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSimularActionPerformed
// TODO add your handling code here:
    // Verificando se arquivos de entrada estao importados
    boolean processo1;
    String caminhoSistema = System.getProperty("user.dir");
    if (processo1 = managementCore.getInterfaceServicos().simularFEMProcesso(caminhoSistema)) {
        txtArquivos.append("\nSimulação em andamento...");
        btnSimular.setEnabled(false);
        txtArquivos.append("\n----------------------------------:");
        txtArquivos.append("\nApós término do proceso, clique em 'Resultados'");
        btnResultados.setEnabled(true);

    }

}//GEN-LAST:event_btnSimularActionPerformed

private void btnSelecionarDiretorioMalhaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSelecionarDiretorioMalhaActionPerformed
// TODO add your handling code here:
    /* Usuario seleciona arquivos de Malha a serem importados */
    ImportadorArquivo importar = new ImportadorArquivo();
    String diretorio = importar.getDiretorio();
    if (importar.getNome() != null) {
        txtArquivos.append("Importados de: " + diretorio + "\\");

        String caminhoUsuario = managementCore.getInterfaceServicos().getCaminhoProjeto() + File.separator + managementCore.getInterfaceServicos().getNomeProjeto() + File.separator + "FEM" + File.separator;
        String nomeOrigem = new String(diretorio + File.separator + importar.getNome());
        String nomeOrigem1 = new String(diretorio + File.separator + importar.getNome() + "-1");
        String nomeOrigem2 = new String(diretorio + File.separator + importar.getNome() + "-2");
        String nomeOrigem3 = new String(diretorio + File.separator + importar.getNome() + "-3");
        String nomeOrigem4 = new String(diretorio + File.separator + importar.getNome() + "-4");
        nomeMalha = new String(caminhoUsuario + importar.getNome());
        nomeMalha1 = new String(caminhoUsuario + importar.getNome() + "-1");
        nomeMalha2 = new String(caminhoUsuario + importar.getNome() + "-2");
        nomeMalha3 = new String(caminhoUsuario + importar.getNome() + "-3");
        nomeMalha4 = new String(caminhoUsuario + importar.getNome() + "-4");

        /* Copia para caminho do sistema onde ficam os executaveis numeracao.exe, final.exe e espalhamento.exe */
        caminhoSistema = System.getProperty("user.dir");
        txtArquivos.append("\nCopiados para: " + caminhoUsuario);
        try {


            /* Copiando arquivos para pasta de projetos do usuario */
            CopiarArquivo.copiar(nomeOrigem, nomeMalha);
            CopiarArquivo.copiar(nomeOrigem1, nomeMalha1);
            CopiarArquivo.copiar(nomeOrigem2, nomeMalha2);
            CopiarArquivo.copiar(nomeOrigem3, nomeMalha3);
            CopiarArquivo.copiar(nomeOrigem4, nomeMalha4);
            System.out.println("caminho usuario: ");

            /* Copiando arquivos para pasta de projetos do sistema */
            CopiarArquivo.copiar(nomeOrigem, caminhoSistema);
            CopiarArquivo.copiar(nomeOrigem1, caminhoSistema);
            CopiarArquivo.copiar(nomeOrigem2, caminhoSistema);
            CopiarArquivo.copiar(nomeOrigem3, caminhoSistema);
            CopiarArquivo.copiar(nomeOrigem4, caminhoSistema);
            managementCore.getInterfaceServicos().exibirMensagemInformacao("Arquivos de entrada copiados com sucesso");
            btnSimular.setEnabled(true);

        } catch (IOException ex) {

            Logger.getLogger(JanelaFEM.class.getName()).log(Level.SEVERE, null, ex);
        }
    }




}//GEN-LAST:event_btnSelecionarDiretorioMalhaActionPerformed

private void btnCancelar3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelar3ActionPerformed
// TODO add your handling code here:
    this.dispose();
}//GEN-LAST:event_btnCancelar3ActionPerformed

private void btnResultadosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnResultadosActionPerformed
// TODO add your handling code here:
    caminhoSistema = System.getProperty("user.dir");
    String caminhoUsuario = managementCore.getInterfaceServicos().getCaminhoProjeto() + File.separator + managementCore.getInterfaceServicos().getNomeProjeto() + File.separator + "FEM" + File.separator + "Resultados" + File.separator;

    String saida1origem = new String(caminhoSistema + File.separator + "Campo-Saida-X.dat");
    String saida2origem = new String(caminhoSistema + File.separator + "Campo-Saida-Y.dat");
    String saida3origem = new String(caminhoSistema + File.separator + "Campo-Saida-Z.dat");

    String saida1destino = new String(caminhoUsuario + File.separator + "Campo-Saida-X.dat");
    String saida2destino = new String(caminhoUsuario + File.separator + "Campo-Saida-Y.dat");
    String saida3destino = new String(caminhoUsuario + File.separator + "Campo-Saida-Z.dat");
    try {

        CopiarArquivo.copiar(saida1origem, saida1destino);
        CopiarArquivo.copiar(saida2origem, saida2destino);
        CopiarArquivo.copiar(saida3origem, saida3destino);
        txtArquivos.append("\nArquivos de resultados copiados para:");
        txtArquivos.append("\n" + caminhoUsuario);



    } catch (IOException ex) {
        Logger.getLogger(JanelaFEM.class.getName()).log(Level.SEVERE, null, ex);
    }

    /* Deletando os arquivos de entrada */
  
    File f = new File(caminhoSistema + "\\Malha");
    f.delete();
    f = new File(caminhoSistema + "\\Malha-1");
    f.delete();
    f = new File(caminhoSistema + "\\Malha-2");
    f.delete();
    f = new File(caminhoSistema + "\\Malha-3");
    f.delete();
    f = new File(caminhoSistema + "\\Malha-4");
    f.delete();



}//GEN-LAST:event_btnResultadosActionPerformed

private void btnLimparActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLimparActionPerformed
// TODO add your handling code here:
    txtArquivos.setText("");
}//GEN-LAST:event_btnLimparActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar3;
    private javax.swing.JButton btnLimpar;
    private javax.swing.JButton btnResultados;
    private javax.swing.JButton btnSelecionarDiretorioMalha;
    private javax.swing.JButton btnSimular;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JSeparator jSeparator4;
    private javax.swing.JTextArea txtArquivos;
    // End of variables declaration//GEN-END:variables
    private GerenciamentoNucleo managementCore;
    private String caminhoSistema;
    private String nomeMalha;
    private String nomeMalha1;
    private String nomeMalha2;
    private String nomeMalha3;
    private String nomeMalha4;
}

